Google I/O 2019: 助力开发者在 Android 和 Play 平台上打造最佳体验
作者: Chet Haase
北京时间 5 月 8 日 01:00am 起,2019 Google I/O 大会通过多种方式与全世界的 Android 开发者互动。相信 Shoreline Amphitheatre 露天剧场的 7,200 位现场嘉宾、收看大会直播的线上观众以及参与 GDG 社区 I/O 延展活动 的开发者都已经了解到我们为让开发者更轻松地工作所做的努力。在 Google I/O 大会上,我们探讨了两大主题: 提升开发者的工作效率,以及在平台中加强对用户隐私和安全的保护。我们来详细了解一下 I/O 大会目前已经爆出的与开发者相关的重磅新闻:
开发者的工作效率
今年,我们专注于一个简单的想法,即我们想为您节省每天的工作时间。而实现这一目标的方法,就是改进您使用的每一项工具。
Kotlin
两年前,我们宣布 Android 平台正式支持 Kotlin 语言。彼时我们的顶级开发者就已经对 Kotlin 爱不释手,自那时起,其发展速度一直令人欣喜。现在有超过 50% 的专业开发者使用 Kotlin。近两年,Kotlin 已跻身 Stack Overflow 上最受喜爱的语言,也是 GitHub 上贡献者数量增长最快的语言之一。
现在,我们要宣布另一项重大举措: Android 开发将越来越向 Kotlin 倾斜。许多新增的 Jetpack API 和功能也将优先提供 Kotlin 版本。如果您正要启动一个新项目,则应该使用 Kotlin 编写,使用 Kotlin 编写程序意味着更少的代码。即,需要输入、测试和维护的代码数量更少。此外,在与 Jetbrains 和 Kotlin 基金会的合作期间,我们将在工具、文档、培训和活动方面持续投资,使 Kotlin 更加易学易用。其中就包括 Kotlin/Everywhere。这是一项新推出的全球系列活动,参与者可以详细了解这门语言、新的 Udacity 课程等。
Kotlin
https://developer.android.google.cn/kotlin/
Kotlin/Everywhere
https://events.withgoogle.com/kotlin-everywhere/
Udacity
https://cn.udacity.com/course/developing-android-apps-with-kotlin--ud9012
Android Jetpack
去年,我们曾推出 Android 的 API Android Jetpack,旨在提升 Android 开发的速度,并让开发者能够使用更少的代码,更轻松地编写出高质量的应用。随着我们继续简化更多开发者日常面临的挑战,在我们前 1000 名的应用中,超过 80% 的应用已经在使用 Jetpack。本次,我们要发布 6 个全新 Jetpack 库 (alpha 版),并将 5 个库的质量提升至测试版水平。以下是 3 个亮点:
CameraX
各位开发者曾告诉我们很难在各种不同的 Android 设备上高效工作。CameraX 是一个全新 Android Jetpack 开源库,可以降低相机应用开发的难度,提升开发速度。此开源库可以在不同设备上提供始终如一的相机体验,使您不再需要维护设备的具体配置。您可以在参与项目的制造商设备上找到对尖端软硬件功能 (例如光学变焦、背景虚化、HDR,以及夜间模式) 的支持。CameraX 适用于近 90% 的设备,并向后兼容 Android L。此外,CameraX 还有一个简单的迁移路径,方便用户从旧版相机 API 迁移,并且还可以与 camera2 API 无缝对接。Android 设备上 70% 的相机使用量来自安装的应用,而非设备内置的相机应用,因此我们非常高兴能够降低相机应用的开发难度。
架构组件
我们根据各位开发者的反馈做出一些补充和改进。开发者们曾告诉我们在 Android 平台上实现并发非常困难。因此,我们将为您带来含有协程的 LiveData 和 Lifecycles,以支持常见的一次性异步操作。使用带有 SavedState 模块的 ViewModel,您可以消除样本代码,并通过简单的 API 获得使用 ViewModel 和 SavedState 的双重益处,进而直接从您的 ViewModel 中保存和检索数据。如果错过这一版也没有关系,我们在几个月前刚刚发布了 WorkManager (后台处理) 和 Navigation (在应用屏幕间导航) 的稳定版。
Jetpack Compose
有许多开发者一直敦促我们提供适用于 Android 平台的现代反应式风格界面工具包,并且可以利用 Kotlin,并能够与平台,以及现有的全部代码无缝集成。我们要介绍该项目团队在 Jetpack Compose 方面所作的工作。Jetpack Compose 旨在将反应式编程模型与 Kotlin 的简洁性和易用性相结合,从而简化界面开发。Jetpack Compose 与现有的界面工具包兼容,因此您可以通过直接访问所有 Android 和 Jetpack API 来混合和匹配视图。此外,工具包还对定义界面组件具有完全声明性。而且,此工具包的设计从一开始便已考虑到材料、动画和工具。从今日起,我们将以公开形式开发此工具包,您可以在 AOSP 上找到所有代码。
Android Jetpack
https://developer.android.google.cn/jetpack
CameraX
https://developer.android.google.cn/training/camerax
带有 SavedState 模块的 ViewModel
https://developer.android.google.cn/topic/libraries/architecture/viewmodel-savedstate
WorkManager
https://android-developers.googleblog.com/2019/03/android-jetpack-workmanager-stable.html
Navigation
https://android-developers.googleblog.com/2019/03/android-jetpack-navigation-stable.html
Android Studio
本次大会上,我们发布了 Android Studio 3.5 测试版。几个月来,该项目团队与 Project Marble 团队合作,专注于优化和改进日常开发流程。Android Studio 3.5 涵盖针对大型项目的更优 IDE 内存管理、更低的输入延迟、Lint 改进、CPU 使用优化、布局编辑器改进、模拟器改进、版本号变更,以及对 Instant Run 的完全重写。Instant Run 现称为 Apply Changes,能够可靠地提升在设备上查看代码更改的能力,还能对 400 多种高优先级的漏洞予以修复。
Android Studio 3.5
https://developer.android.google.cn/studio/preview
Lint 改进
https://medium.com/androiddevelopers/android-studio-project-marble-lint-performance-8baedbff2521
布局编辑器改进
https://medium.com/androiddevelopers/android-studio-project-marble-layout-editor-608b6704957a
模拟器改进
https://medium.com/androiddevelopers/android-emulator-project-marble-improvements-1175a934941e
版本号变更
https://medium.com/androiddevelopers/improving-build-speed-in-android-studio-3e1425274837
Apply Changes
https://medium.com/androiddevelopers/android-studio-project-marble-apply-changes-e3048662e8cd
Android 规模的机器学习
在 Android Q 中,我们已对 Android 神经网络 API (NNAPI) 做出重大改进。首先,我们将支持的运算符数量从 38 增加到 90。现在,NNAPI 无需更改即可加速绝大多数模型。我们还为高级用户引入自检 API,以帮助他们完全控制负责加速的硬件 (例如,DSP 与 NPU)。此外,我们还与硬件供应商紧密合作,以显著提升性能 (降低延迟时间和能耗)。通过与 MediaTek 合作,我们能够在 Helio P90 上将 ML Kit 人脸检测 API 的运行速度提升 9 倍。与 Qualcomm 的合作使我们能够提升 Google Lens OCR 在 Snapdragon 855 AI Engine 上的运行速度,并在提速 3 倍的同时将能耗降低 370%。
ML Kit
https://developers.google.cn/ml-kit/
动态功能和应用内更新
去年,我们曾推出能够帮助您缩减应用大小并增加安装量的 Android App Bundle。自那时起,我们已经看到 80,000 多个应用软件包进入生产状态,而应用大小则平均缩减 20%。本次大会我们要发布许多内容,以帮助您缩减应用大小,并进一步提升向用户发布更新的速度。我们非常高兴地介绍正在从测试版过渡到稳定版的动态功能模块。借助动态功能模块,您可以根据设备功能、国家/地区等条件选择应用要提供的功能,从而进一步缩减应用大小。您甚至可以按需提供模块,而不用在安装时统一添加。今天,我们还要将应用内更新功能从测试版转为稳定版。这种动态更新应用的能力正是您长久以来希望获得的功能。假设您的应用中存在一个严重漏洞,您需要立刻消除,而且不希望等到用户在 Play Store 发现应用更新时才能消除。现在您就可以即刻消除漏洞。
Android App Bundle
https://developer.android.google.cn/platform/technology/app-bundle
动态功能模块
https://developer.android.google.cn/guide/app-bundle/playcore
应用内更新
https://developer.android.google.cn/guide/app-bundle/in-app-updates
Android Q 的用户隐私与安全
作为开发者社区,我们所有人都非常重视妥善处理用户的隐私与安全问题。这关系到在构建能够为开发者提供强大功能的平台的同时,确保用户的安全和隐私得到保护。几个月前,我们推出的 Android Q 测试版具备 50 多项功能以及围绕用户隐私与安全做出的改进。这些 Android Q 的变更可为用户提供更多的透明度和可控性。
一如既往,我们正努力完成有助于开发者采用新版本的所有工作。我们知道您有自己想要构建的功能。这也正是为什么我们非常努力地将这些 Android Q 变更对您的影响降到最低,并将您的反馈纳入其中。我们提供尽可能长的通知期,并预先提供完整详尽的技术信息,以帮助开发者轻松采用新版本。我们还想感谢社区的持续反馈。这对努力试图妥善解决此问题的团队而言是非常巨大的帮助。一个非常典型的示例是第 3 个测试版的存储空间变更,您的反馈帮助我们在测试期间改进功能。长久以来,Android 致力于将所有重大变更对用户隐私和安全的影响降至最低。我们矢志不渝,并将努力让 Android 成为我们钟爱的灵活开放平台,方便开发者使用。
第 3 个测试版的存储空间变更
https://android-developers.googleblog.com/2019/04/android-q-scoped-storage-best-practices.html
参与 Google I/O!
我们准备了许多精彩内容,包括超过 45 场的跨 Android 领域会议。非常高兴您关注本次的 Google I/O 2019,通过直播在线收看大会,或参与 GDG 社区 I/O 延展活动。我们还会不断加大投入,不断完善这一将开发者与全世界数十亿用户紧密相连的平台。感谢您对整个 Android 社区的持续支持和反馈!
45 场的跨 Android 领域会议
https://events.google.com/io/schedule/events/?2=topic_androidplay
推荐阅读